﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Frame для страниц - представляющих сочетание - редактора фильтра и сетки с результатами фильтрации
/// Функциональность - связать - IFilterEditor и IListOfFilter
/// </summary>
public class FilterListMasterPage:System.Web.UI.Page
{
    protected override void OnPreLoad(EventArgs e)
    {
        ///Связать - редактор фильтра с сеткой 
        Filter.ImChange = FilterChange;
        ListOfFilter.DataSource = Filter.DataSource;
    }

    protected override void OnLoad(System.EventArgs e)
    {    
        
    }
    
    /// <summary>
    /// Собтие гридника - редактировать строчку
    /// </summary>
    /// <param name="ID"></param>
    /// <returns></returns>
    protected bool Grid_OnRowClick(string ID)
    {
        string sUrl = AppEnvironment.PageNavigator.GetEditObjectUrlCommand(Filter.DataSource().ObjectPageKey,
                                                                        ID,
                                                                        Filter.DataSource().Where.EntityTypeTagName,
                                                                        Filter.DataSource().AddUrlHandler_Edit);
        AppEnvironment.PageNavigator.Redirect(sUrl);
        return true;
    }

    protected virtual void btnAdd_Click(object sender, EventArgs e)
    {
        string sUrl = AppEnvironment.PageNavigator.GetNewObjectUrlCommand(Filter.DataSource().ObjectPageKey,
                                                                          Filter.DataSource().Where.EntityTypeTagName,
                                                                          Filter.DataSource().AddUrlHandler_Insert);
        AppEnvironment.PageNavigator.Redirect(sUrl);

    }

        
    protected virtual IFilterEditor  Filter { get { return null; } }
    
    protected virtual IListOfFilter ListOfFilter { get { return null ; } }

    protected virtual bool FilterChange()
    {        
        return true;
    }
   
}

